﻿<%@ WebHandler Language="C#" Class="OtherHandlerService" %>

using System;
using System.Web;

using System.Collections;
using System.Collections.Generic;
using System.Reflection;

using XJX.BusinessLayer;

using XJX.Page;

public class OtherHandlerService : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/json";

        string response = "";

        String methodName = context.Request["method"];
        Type type = this.GetType();
        MethodInfo method = type.GetMethod(methodName);


        if (method == null)
        {
            response = new XJX.Page.JsonResult(XJX.Page.StatusMessageType.Hint, "调用的方法不存在！").ToJson(); return;
        }

        try
        {
            BeforeInvoke(methodName);
            response = method.Invoke(this, null).ToString();
        }
        catch (Exception ex)
        {
            Hashtable result = new Hashtable();
            result["error"] = -1;
            result["message"] = ex.Message;
            result["stackTrace"] = ex.StackTrace;
            String json = XJX.BusinessLayer.JSON.Encode(result);
            context.Response.Clear();
            context.Response.Write(json);
        }
        finally
        {
            AfterInvoke(methodName);
            HttpContext.Current.Response.Write(response);
        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

    //权限管理
    protected void BeforeInvoke(String methodName)
    {
        //Hashtable user = GetUser();
        //if (user.role == "admin" && methodName == "remove") throw .      
    }
    //日志管理
    protected void AfterInvoke(String methodName)
    {

    }


    //===============================================================================================================================================
    //===============================================================================================================================================
    //===============================================================================================================================================
    //===============================================================================================================================================
    //===============================================================================================================================================

    //获取所有分类。
    public string Get_ALL_Category()
    {
        return XJX.Page.Other.Get_ALL_Category();
    }

    //获取所有参数。
    public string Get_ALL_Param_For_JSON()
    {
        return XJX.Page.Other.Get_ALL_Param_For_JSON();
    }

    //求得汇总数据
    public string Ad_Report_Get_Summary_List()
    {
        string procname = "";
        int ProcedureID = int.Parse(HttpContext.Current.Request["ProcedureID"]);
        switch (ProcedureID)
        {
            case 1://获得，按图书借阅量排名的表
                procname = "Ad_Report_Get_Book_BorrowNum_List";
                break;
            case 2://获得，按图书浏览量排名的表
                procname = "Ad_Report_Get_Book_BrowserNum_List";
                break;
            case 3://获得，按图书书评量排名的表
                procname = "Ad_Report_Get_Book_EvaluateNum_List";
                break;
            case 4://获得，按图书星级量排名的表
                procname = "Ad_Report_Get_Book_EgradeNum_List";
                break;
            case 5://获得，按班级图书量排名的表
                procname = "Ad_Report_Get_Class_BookNum_List";
                break;
            case 6://获得，按班级借阅量排名的表
                procname = "Ad_Report_Get_Class_BorrowNum_List";
                break;
            case 7://获得，按班级评价量排名的表
                procname = "Ad_Report_Get_Class_EvaluateNum_List";
                break;
            case 8://获得，按家庭图书量排名的表
                procname = "Ad_Report_Get_Family_BookNum_List";
                break;
            case 9://获得，按家庭借阅量排名的表
                procname = "Ad_Report_Get_Family_BorrowInNum_List";
                break;
            case 10://获得，按家庭借出量排名的表
                procname = "Ad_Report_Get_Family_BorrowOutNum_List";
                break;
            case 11://获得，按家庭书评量排名的表
                procname = "Ad_Report_Get_Family_EvaluateNum_List";
                break;
            case 12://获得，新书表
                procname = "Ad_Report_Get_Book_New_List";
                break;
       }

        return XJX.Page.Other.Ad_Report_Get_Summary_List(procname);
    }    
    
}